DIRECTQ 1.7.666c UPDATES
========================

* Increased quality of sound scale table (less abrupt transitions between volume levels).
* Increased sound paintbuffer size to help prevent sound stuttering, breakup or drop-out.
* Added ProQuake NAT fix (use cl_natfix to toggle, default 1 (on)).
* Fixed bug where BeginScene would not get called in time if only liquid surfs were visible in the world.
* Rationalized sound buffer locking and usage a little better.
* Fixed bug where a player head model skin would get replaced with a full player model skin.
* Begun generalising the effect system for both HLSL and non-HLSL.
* Added fallback for cases where L8, A8L8 and X8R8G8B8 texture formats are not supported.
* Added rudimentary HalfLife BSP Support (not too robust, yes I'm aware of the bugs).
* Added exception handling around main loop to try help with restoring gamma correctly after a crash.
* Added HLSL classic sky warp - no depth buffer trickery, no perspective trickery, just looks *right*.



DIRECTQ 1.7.666b UPDATES
========================

* Set minimum far clip to 4096 so that it plays nice with maps/mods that expect it.
* Fixed menu shortcut keys/commands not allowing you to exit from menus properly.
* Fixed vid_restart and state restore at fullscreen console.
* Cleaned up game changing a little.
* Restored mouse pointer is visible in menu and console screens with windowed mode.
* Forced r_wireframe to always off in multiplayer (potential wallhack).
* Reimplemented (optional, only if supported) pixel shader water warp.
* Added r_hlsl cvar to toggle hlsl on or off (for cards that don't run well with it) - default 1.
* Switched all fog to per-pixel when using pixel shaders (simplicity).
* Fixed issue with hud_sbaralpha saving as integer in HUD configs.
* Added "Change Game Directory" to Options menu in simple mode.
* Set skill 1 when selecting New Game from the SinglePlayer menu.
* Fixed autocomplete bug where an empty content list would crash the game.
* Modified player skin caching system to actually be reliable.
* Removed console and menu from display when a map is started in play/record/time demo mode.
* Added sv_speed cvar (default 1) to control the rate at which time passes - use values < 1 for slowmo.
* Restored variable water surf subdivision via gl_subdivide_size (and old ugliness with values > ~32).
  (This isn't used with r_hlsl 1).
* Switched mouse input from immediate to buffered and made it more robust vs "can't stop moving after release".
* Fixed CPU yielding when paused/minimized/not the focus/etc.
* Added r_gunangle cvar, default 2, set to 0 for FitzQuake/DarkPlaces style gun (1 is intermediate).
* Enabled key auto-repeat for console and menus.
* Reverted full scoreboard to old behaviour (releasing TAB hides it) in multiplayer games.
* Enforced old ammo/health box lighting method in multiplayer games.
* Reverted something similar to old alias model lighting range in miltiplayer games.



BY WAY OF EXPLANATION
=====================

This release was originally intended to be 1.7.4, and was to have a limited subset of the features listed below;
basically those towards the top of the list.  However, things got out of hand and I kept adding more and more,
primarily as an excuse to have something to do other than finishing off the ProQuake messaging system.

By the time I decided to leave the messaging in a semi-implemented state for this release I had added so much that
I felt it was time to start bringing things together and get it out.  Unfortunately while I was going about this
Metlslime went and documented the FitzQuake protocol, so I just had to put that in too.

While all this was going on I had two other projects - one minor and one fairly substantial - on the go, both of
which remain unfinished.  There was also the small matter of the usual Real Life.

This was meant to be out AGES ago.  Sorry about that.

The decision to bump the version number was made because of the large amount of significant changes and new
features that went in.  I didn't want to call it 1.8 as I had, and still have, some very specific plans for that
version.  Someone had mentioned that I had missed the boat by not having a 1.666, so here it is, a version number
later.


DIRECTQ 1.7.666 UPDATES
=======================

* Increased console buffer to 256k.
* Removed dosisms.h (unused).
* Added protocol selection to Multiplayer/New Game menu (included descriptive text for each protocol).
* Improved texture resource management slightly.
* Relaxed restriction on size of sky textures - can use 4x2 or upwards.
* Added v_gunkick cvar (default 1 to replicate ID Quake) and moved all kick control cvars to archive.
* Added bestweapon.
* Removed baseline updating from PROTOCOL_VERSION_MH (any demos recorded with this version may become invalid).
* Added +/-quick* commands to keybindings menu and removed ancient/rarely used stuff (keyboard look, look up, etc) from that menu.
* Switched gamma handling from mixed to pure GDI.
* Added say/team %l/%t/etc formatting (made it case-insensitive).
* Added ProQuake message parsing (quite crude and incomplete ATM).
* Added "vid_defaultmonitorgamma" command to revert monitor gamma to linear if it screws up.
* Modified COM_Parse to enable parsing of full lines as well as tokens (for .loc files).
* Added hud_centerhud cvar to control centering of entire HUD.
* Added scr_viewsize, gl_conscale, scr_fov and scr_fovcompat to video menu even in simple mode.
* Added comaptibility for DarkPlaces non-standard skin replacement locations.
* Fixed dynamic lights were on models and objects even with r_dynamic 0.
* Implemented dynamic far clipping plane depending on map size.
* Adjusted dynamic far clipping to work off dimensions of current view.
* Reworked sky and sky fog for compatibility with variable far clipping plane; same appearance at all values.
* Switched 2D stuff to D3DFVF_XYZRHW for extra performance.
* Adjusted r_dynamic so that values != 0 are now a scaling factor for dynamic lights.
* Removed W Buffer.
* Restored r_shadows mode.
* Added d3d_infodump command to generate info about current state and driver for further analysis.
* Fixed bug where an empty centerprint used to explicitly clear the previous one wasn't doing so.
* Added "inc" command from FitzQuake.
* Added "lastweapon" command to switch to last used weapon (added to keybindings menu).
* Added ability to run DirectQ from any folder (not just your Quake folder) (limited in released version).
* Restored original default gamma range.
* Removed several stupid hacks that should not be needed any more.
* Added r_overbright cvar to control overbrighting; default 1, valid values 0, 1, 2.  0 == default GLQuake.
* Definitively fixed r_fullbright 1 mode.
* Corrected oversaturation of lumas for different values of r_overbright.
* Cleaned out lots of weird and horrible code in the menu system.
* Bumped version number to 1.7.666.
* Added vsync control via vid_vsync cvar; default 0 (vsync off).
* Compiled for Windows 2000+ Compatibility.
* Switched missing gfx.wad error message to something more friendly.
* Standardised some startup calls with SDK examples.
* Corrected handling of Ortho and Perspective matrixes so that they now multiply the previous value in the matrix.
* Reworked fullbright handling to work correctly with custom colormaps that don't contain fullbright entries.
* Reworked lighting ranges to be even more accurate to the Quake colormap.
* Restored gl_texturemode command and options as in GLQuake.
* Added cmdlist, cvarlist and cmdcvarlist to dump commands and/or cvars to console or file.
* Relaxed restriction on external luma textures requiring to have luma texels in the native texture.
* Rewrote lightmap handling and evicted a lot of horrible code.
* Restored original software Quake and GLQuake 'm' lightstyle of 256 (was 264 for ('m' - 'a') * 22).
* Removed gl_flashblend (again!)
* Made r_fullbright consistent with different values of gl_overbright.
* Disabled vid_restart at a disconnected console for release builds (graphical glitch city).
* Fixed alias model cache bug (new for 1.7.666, was not in previous versions).
* Resized initial memory allocations for peaks of a full run through all of ID1.
* Fixed crash with -nosound.
* Changed default underwater warp speed to more closely match software Quake.
* Implemented FitzQuake protocol 666.
* Implemented better fix for buffer overflow/memory access violation in PF_VarString.
* Added r_filterrefresh cvar to prevent slow gfx cards from bottlenecking when everything else is fast (default 0).
* Added r_waterwarp 2 mode for projection matrix waterwarps (also used if RTT warp is unavailable).
* Switched game timer from QueryPerformance functions to multimedia timer (evil on x64 and multi-core).
* Restored Draw_DebugChar.


DIRECTQ 1.7.3 UPDATES
=====================

* Standardised file I/O further.
* Prevented PK3 support from creating a folder structure under %USERPROFILE%\Local Settings\temp.
* Removed nehahra cutscene cvars from checking/enumeration for non-Nehahra games.
* Added new PROTOCOL_VERSION_MH extending coordinate system to 3.402823466e+38F.
* Improved accuracy of angle quantization for old protocols.
* Changed angles to quantized shorts instead of full floats for new protocol (bandwidth and packet size).
* Added improved baseline comparison/updating to new protocol.
* Optimized translated player skin uploads to resolve multiplayer stalls and hitches during intense firefights with lots of players.
* Added autocompletion for alias commands.
* Restructured command execution for better performance (binary search instead of linear search, etc).
* Increased command buffer to 1MB.
* Removed last occurrances of std::vector and std::algorithm.
* Added simple menus option (default) - controlled by menu_advanced (default 0).
* Removed r_monolight cvar, added r_coloredlight cvar, made coloured lighting on the default.
* Fixed overlapping sprites z-write bug.
* Fixed name maker and restored to multiplayer setup menu.
* Switched debug info to C7 compatible owing to the dreaded C2471 error starting to appear.


DIRECTQ 1.7.2 UPDATES
=====================

* Fixed "illegible server message" on demos recorded on engines that send U_TRANS but don't change PROTOCOL_VERSION.
* Transitioned much file input to Win32.
* Fixed continuous "mode is unchanged" message.
* Resolved more clipnodes > 32767 issues.
* Added host_maxfps cvar for control of Host_FilterTime (default 72).
* Added Nehahra MOVETYPE_FOLLOW support.
* Bumped max nodes to 65535 by implementing arguiRe's hacky fixes.
* Implemented optimized cullents tracing via suggestions from LordHavoc; switched default to 1.
* Implemented variable lightmap sizing thus allowing surface extents to go up to > 32768 on typical hardware.
* Fixed bug where a worldmodel which has angles set will cause incorrect clipping behaviour.
* Fixed bug where link files were not working correctly.
* (Temporarily) Removed name maker from Multiplayer setup menu.
* Added PK3 support.


DIRECTQ 1.7.1 UPDATES
=====================

* Corrected wrong version number in 1.7 update list.
* Restored default value of r_wateralpha to 1.
* Restored "view is inside the dlight" handling for gl_flashblend 1 mode.
* Definitively fixed stuff showing through water surfs on a contents transition.
* Resolved crash bug in TGA screenshots where backbuffer format was < 32 bits.
* Fixed rare infinite texturechain lockup case.


DIRECTQ 1.7 UPDATES
===================

* Cleared open file handles on a game change.
* Fixed .alpha "illegible server message".
* Renamed vid_mode cvar to d3d_mode (prevent invalid values in a config from causing problems).
* Removed display of total monsters or total secrets when either is 0 (remake quake compatibility).
* Lightened default contents cshifts for better underwater visibility.
* Fixed automap scaling and positioning.
* Cleaned out matrix handling.
* Transitioned 2D rendering back to fixed functionality.
* Transitioned particles back to fixed functionality.
* Transitioned underwater warp back to fixed functionality.
* Transitioned sprites back to fixed functionality.
* Transitioned alias models back to fixed functionality.
* Transferred initial camera position to view matrix so that default world matrix is always identity (easier save/restore).
* Transitioned instanced brush models back to fixed functionality.
* Completed transition to fixed functionality for all remaining items and removed HLSL framework.
* Ported FitzQuake's "old style" "correct warp" water warp render.
* Removed MH sky sphere warp.
* Split opaque water drawing to a separate dedicated pass.
* Signficantly reworked alias model drawing.
* Added .alpha support to brush models, alias models and sprite models.
* Reworked edict allocation and fixed potential crash bug when loading edicts from saves.
* Fixed (I hope!) long-standing DirectQ crash bug in Draw_CachePic.
* Added simple sky alternative for r_skywarp 0.
* Fixed static entity removal was not working.
* Added permanent gibs cvar (sv_permagibs, default 0).
* Reworked entire Heap memory allocation system to use virtual pools instead.
* Reverted to compressed vis (for faster map loading and memory overhead reduction).
* Added gl_compressedtextures cvar, default 1, set to 0 to disable texture compression on new textures.
* Restored alias model caching.
* Restored sound caching.
* Added sprite caching.
* Fixed crash bug in multiplayer setup menu.
* Fixed colour change doesn't take effect until after map change.
* Added gl_maxtextureretention cvar (default 3) to control how long unused textures are retained for.
* Switched particle render to use indexed primitives for performance.
* Implemented particle filtering by contents to fully resolve particle above water/below water issues.
* Implemented entity depth sorting for alpha resolving.
* Added fog (usual cvars) with parsing from worldspawn.
* Added zone memory using new memory system.
* Completely relocated all malloc calls to new memory pool system for better reporting of memory use.
* Added fog options menu.
* Added correct contents colour shifts depending on colout of liquid texture.
* Resolved all animating texture Host_Errors by just switching the offending texture to non-animating and devprinting a message.
* Resolved 16 char long texture names error.
* Implemented non-recursive BSP node/leaf parent matching to resolve extreme BSP depths (this is clever...)
* Resolved various automap rendering bugs and omissions, and implemented some optimisations.
* Added reporting of which lump has the funny size (this is now a Host_Error so you can continue playing on another map).
* Made r_novis take effect immediately instead of on a viewleaf change.
* Added r_lockfrustum cvar (default 0).
* Resolved long-standing issue of entities in server fatpvs showing through water surfs.
* Added several optimized recursion cases.
* Fixed crash bug where a static entity doesn't have a model.
* Renamed sv_antiwallhack to sv_cullentities (compatibility).
* Added r_normqrain cvar to enable user to disable Remake Quake rain model (default 0).
* Generalised brush render functions for inline and instanced with or without alpha.
* Added r_instancedlight cvar, set to 0 to revert to old ammo box lighting mode (default 1).
* Added key_automap state with special automap keys to scroll and zoom.
* Resolved several rendering issues and general all-round weirdness with the automap.
* Resolved issue of inline brush models that have not been sent by the server not being visible in the automap.
* Documented automap control cvars and commands.
* Removed library replacement functions.
* Switched all vsprintf to _vsnprintf to make buffers safe.
* Replaced all uses of sprintf with _snprintf to make buffers safe.
* Restored gl_flashblend 1 mode (0 is the default).
* Removed net_vcr code; removed more old grotty modem and IPX code.
* Removed 64 bit lightmaps.
* Removed disgusting and buggy old file handles system.
* Ensured that all memory allocated by DirectQ is marked non-executable.
* Added autocompletion to changelevel, game, save and load commands.
* Fixed sky fog (looks ugly on skyboxes because of corners, will need to project the skybox onto a sphere for to fix this).
* Increased cl.levelname to 128 for those really long level names (requires hackery in game saves).
* Added cacheclear command for on-demand clearing of cached objects.
* Resolved several trigger and clip bugs that made warpc impossible to complete.
* Imported BJP Quake PR_ExecuteProgram for more robust QC interpretation: no longer crashes on SDQuake mod.
* Improved gamedir enumeration by looking for bsp, mdl and any pak file if known game files are not found.
* Reverted to 1.6.3 lightmap updating for code simplicity, faster map loads and memory saving.
* Initial nehahra support implemented; can now run nehahra maps without crashing (as much as I've tested anyway).
* Optimized memory usage during alias model meshing a little for faster loading.


DIRECTQ 1.6.3 UPDATES
=====================

* Fixed wrong version number in Window title.
* Amalgamated readme docs for previous versions.
* Partially implemented fixed path on world and alias models.
* Removed d3d_Device->SetTransform calls (I feel silly for having left them in so long...)
* Added improved state management.
* Removed TimeRefresh command.
* Improved effect pass switching; should no longer switch to a pass if nothing is drawn in that pass.
* Improved BeginScene/EndScene calls to conform with specification and documentation.
* Removed silly translucency check.
* Modified vis loading so that decompression is done at load time.
* Restored anti-wallhack code and added cvar to toggle it (sv_antiwallhack, default 1).
* Fixed bug where D3D lighting was not being disabled.
* Enforced correct default states in the state manager and in the renderer.
* Added enhanced smoke trail particles (r_newparticles 1, default 0).
* Removed framerate dependency from particle system (and anything else using r_frametime for updates).
* Removed framerate dependency from dynamic light system.
* Fixed bug where water surfs, particles and sprites were potentially rendered with an invalid depth bias.
* Added sv_pvsfat cvar to control how fat the fatpvs is; default 8, set to higher values to fix disappearing models in some maps.
* Fixed bug where an entity that touches MAX_ENT_LEAFS, none of which are in the PVS, but the entity should be visible, is not transmitted.
* Added improved entity leaf touch detection as a consequence of the above (functionally identical to old way).
* Removed restriction on number of leafs an entity may be in.
* Adjusted brushmodel loader so that leafs and nodes are in contiguous memory.
* Optimised surface index loading to make map loading substantially faster.
* Substantially optimised other areas of map loading; maps should now load about 10x faster than 1.6.2
* Optimized memory allocations in a more general manner for faster map load times.
* Reworked Cvar_Set (cvar_t *, float) and Cvar_Set (char *, float) to prevent value round-tripping through a char *.
* Added gl_clearcolor command (and _gl_clearcolor cvar, not intended to be used directly) to control background clear colour; default 0 (black).
* Added r_lightscale cvar to help rebalance really bright or really dark maps (default 1).
* Fixed hard crash when you try to run a mod that uses rogue/hipnotic/quoth content without having r/h/q in your gamedirs.
* Added support for DXT1, DXT3 and DXT5 texture compression.
* Moved hud_overlay, hud_sbaralpha, hud_drawsbar and hud_drawibar to CVAR_ARCHIVE for performance boost.
* Changed sv_antiwallhack default to 0.
* Allowed TAB key in demos to display current scores (this is hard-bound, even if you have TAB bound to something else).
* Restored automap code (toggleautomap command, bind to "m" or something) - not very robust or performant right now.
* Fixed solid and sky leafs give waterwarp effect (old GLQuake bug).
* Removed index buffer render (gives BSOD when loading marcher when enabled).
* Fixed crash bug where a surf with an invalid texture (NULL) may get it's lightmap updated (new lightmap sorting makes this invalid too).
* Removed sRGB support - needs to be repeatedly switched off/on again for alpha blending, which seriously hurts perf :(.
* Fixed crash in demos menu where you enter the menu but have no demos; just goes direct to record mode and hides mode selection option.
* Made menu spincontrols more robust vs empty lists (but any custom draws will still need custom handling).
* Trapped a no maps installed condition and made it a Sys_Error (note: maps menu uses the filesystem as well as PAKs so this is safe).
* Added front plane frustum cull test (can cut down on wpoly (and occasionally) epoly count quite a bit), faster as a general case.
* Added improved frustum culling setup and tests via JohnFitz and LordHavoc.
* Added QuakeC "debugger", set qc_debug cvar, 0: none, 1: log to console, 2: log to file "qcdebuglog.txt", 3: log to both console and file.
* Bumped max demos in loop to 64.
* Removed centerprint logging and fading (hopefully temp) - interferes with mods that use centerprints for stats and/or menus in-game.
* Worked around console spamming from centerprint logging; restored it.


DIRECTQ 1.6.2 UPDATES
=====================

* Fixed r_64bitlightmaps 0 on a device that supports 64 bit textures gives 4 x brightness.
* Fixed crash in timedemo demo3 (also potential crash in a number of other scenarios).
* Added sRGB Color Space option (default off) (r_sRGBgamma cvar).
* Removed case sensitivity from cvar tab autocompletion.
* Restored alias models to correct place in draw order.
* Added sRGB support to linear colour operations.
* Added skyalpha support (r_skyalpha).
* Removed loading disc code.
* Switched world surface rendering to front-to-back.
* Resolved various bugs with render states being lost following a device reset.
* Resolved MAJOR cause of slowdown on cards that support hardware T&L.
* Fixed hipnotic particle field was missing.
* Reverted alias model interpolation back to the vertex shader.
* Removed state blocks.
* Added index buffer for world surfs (r_useindexbuffer, default 0), may be faster on some cards.
* Tightened up on video startup by adding a check for fullscreen mode support and texture creation to each format type.


Release 1.6 updates.
====================

* Added XInput code for XBox 360 Controller.
* Added FX loading from file (in gamedir/shaders, built-in shaders are available in source code folder).
* Removed messy "Apply" stuff from menu code.
* Added ability to show/hide/enable/disable menu options.
* Changed video mode selection from instant to requiring an "Apply".
* Added loaders for several "enhanced" particle types ("enhanced" system not implemented yet).
* Further updates of particle system, replaced types with individual particle parameters.
* Made new Multiplayer game config menu more tolerant of run-time game changes.
* Removed dependency on ID1 naming convention from viewmodel muzzleflash frame interpolation hack.
* Removed frame interpolation from bolt models.
* Fixed crash on changelevel where you give yourself the lightning gun before changing level.
* Fixed r_lightmap cvar.
* Removed efrags system (replaced with similar - but more efficient - system).
* Ported trace system from light.exe source code.
* Fixed rotating va buffers disappeared somewhere around 1.2
* Added proper bilinear resampling for texture upsizing.
* Made Heap_TempAlloc more robust against recursive calls.
* Worked around occasional weird crash in Draw_CachePic.
* Removed dedicated server functionality.
* Fixed memory leak in S_LocalSound.
* Fixed shader loading from resources (badly broken).
* Moved project to Visual C++ 2008 Express.
* Added centerprint logging (scr_centerlog - need to change this to a standard cvar name - default on).
* Cleared out gl_triplebuffer and vid.numpages.
* Adding fading to centerprints and console notifications.
* Fixed bug where brush and sprite static ents were not rendered unless a regular brush or sprite ent was also rendered.
* Tightened up on textbox input for content names and locations menu.
* Added customisation of base save and screenshot names.
* Exposed screenshot format cvar via content menu (TGA/BMP/PNG/DDS/JPG support).
* Moved alias model interpolation back to CPU (lighter vertex submission).
* Fixed "dying throes" interpolation bug.
* Added Maps menu.
* Restored offset centerprinting from "lost version" somewhere around 1.2 or 1.3 (...long story...)
* Removed limit on number of menu cachepics.
* Removed limit on number of alias verts (fixed vert loader so it only allocs the number of verts needed too).
* Fixed crash bug with game changing followed by map load; made progs loader significantly more robust in the process.
* Added optional (on by default) "classic" sky warp (ripped from darkplaces) - use r_skywarp 0 to revert to sky sphere warp.
* Added r_skybackscroll and r_skyfrontscroll cvars to control sky scroll speed.
* Split out warp surfaces to a new options submenu and added sky warp control options.
* Moved skies from fixed functionality to HLSL (there is no fixed functionality left in the engine now).
* Added 8 new custom crosshairs (some good, some rubbish).
* Added skybox loading to menu.
* Fixed multiplayer map selection so that it works off the same map list as the maps menu.
* Added TAB autocompletion to "map" command.
* Added TAB autocompletion to "loadsky" command.
* Added TAB autocompletion to "playdemo" and "timedemo" commands.
* Added demos menu allowing playdemo, timedemo or record commands.
* Fixed Timerefresh command.
* Added more configurability to underwater warp.
* Cleaned up water "lock alpha sliders" option a little.
* Made SCR_ModalMessage look less "1996".
* Removed all remaining hard limits from alias model mesh system.
* Added ability to switch between full and partial precision when loading shaders.
* Added r_64bitlightmaps cvar for switching 64 bit lightmaps off (on platforms that support it).
* Removed automap code.
* Restored menu highlight colour selection option from "lost" version.
* Fixed long-standing "Center Align X" appearing where it should be "Y" typo in HUD menu.
* Added custom name generator.
* Moved more state info to HLSL backend and implemented state manager.


Release 1.5 updates.
====================

* Removed -cachedir command-line option.
* Removed registered restriction on file loading.
* Removed registered restriction on modified games.
* Removed Sys_Error on invalid pop.lmp
* Adjusted file opening so that directory paths will override pak file contents.
* Removed name restrictions on pak files.
* Removed restriction on number of files in a pak.
* Added "game" command and game changing.
* Increased SECONDARY_BUFFER_SIZE to 0x100000 (more efficient use).
* Fixed bug in texture loader where free slots weren't being reused.
* Added games menu.
* Added r_rapidfire cvar to control "rapid fire muzzleflash" dynamic lights (default 0).
* Fixed quoth mods not getting hipnotic hud layout.
* Reworked particle system to allow for multiple textures and adjustable render params (still classic system though).
* Increased progs stack depth and size.
* Fixed occasional lockup in SV_TouchLinks (credit Tyrann for fix, Spirit for publicising the bug).
* Added "gamedir" command (same behaviour as "game").
* Added ability for "game" and "gamedir" to take multiple args.
* Added (buggy) automap - use "toggleautomap" command.
* Implemented several QIP bugfixes.
* Removed limit on number of file handles.
* Implemented basic DP extensions framework (don't get excited - no extensions implemented yet!)
* Added sv_oldvelocity cvar (default 1) to revert velocity bounding to original (fixed method changes gameplay).
* Made all cvars in sv_phys.cpp server cvars (broadcast if changed) - (seems the right thing to do).
* Reworked translucency handling again, added independent water/lava/slime/tele sliders and "lock alpha sliders" cvar (r_lockalpha, default 1).
* Removed gl_flashblend 1 mode (it was nice to have it for completeness sake, but when PS 2.0 is needed is this really necessary?)
* Fixed static entities not frame interpolated.
* Added cl_crossx and cl_crossy functionality.
* Added scr_crosshairscale (consistency with fitzquake) and scr_crosshaircolor (0-13, palette lookup based, default 0).
* Added crosshair options to HUD menu (ugly but functional).
* Removed #ifdef PARANOID code.
* Demoted several Sys_Error events to either Host_Error or Con_DPrintf with fixup.
* Finished resolution changing (...I hope...)
* Cleaned out some of the inherited global variables mess in vidnt.
* Fixed bottom edge of underwater warp screen.
* Added GPL header to all files.


Release 1.4 updates.
====================

Gratitude to everyone who provided bug reports and/or feedback on the last release.  Your contribution has definitely helped make this one better.

* Fixed r_novis 1 crash.
* Removed contents transition code from R_MarkLeaves - doesn't play nice with translucency and doesn't handle entities.
* Fixed lockups in OpenQuartz and other mods where inline bmodels seem to share surfaces.
* Renamed r_anisotropicfilter to gl_texture_anisotropy (consistency with other engines).
* Added FOV to video/view menu.
* Changed widescreen fix so that it's only effective at FOV 90 (consistency with other engines).
* Added fov_compatible cvar to allow player to override this.
* Removed HUD when loading plaque is visible (looks wrong).
* Fixed instanced brush model R_LightPoint start position.
* Added missing sprite types from WinQuake.
* Switched viewsize to 120 when loading plaque is up (still not sure, looks right at intermissions though).
* Increased Alias Model vertex limits.
* Fixed display of savegame date and time (mental note to self: ".sav.sav" is not a valid extension here...)
* Switched mapshots to 128*128 PNG format (TGAs unstable & old size was too large); reverted display to 128*128.
* Removed MAX_EDICTS print out from SV_SpawnServer (should have never made it to release).
* Fixed problem with rotating weapon models being clipped when they shouldn't.
* Removed limit on surface extents.
* Restored limit on surface extents (lightmap size of 128 * 128 enforces a max of 2032).
* Fixed lightmap corruption on Quark ETP maps (grrrrrrrrr).
* Fully removed old zone.cpp/zone.h code.
* Cleaned out remainder of old sbar code.
* Updated window title and splash screen to new version number.
* Fixed viewmodel with FOV > 90 and made compatible with zoom mode (i.e. retained classic behaviour with FOV < 90).
* Added 8 custom crosshairs (in addition to 2 standard - white '+' and orange '+').
* Fixed (I hope!!!) "reliving their dying throes" interpolation bug.
* Removed video modes where width is < height from the available modes list.
* Added FPS counter to HUD display (scr_showfps) - in HUD menu.
* Added Clock to HUD display (scr_clock) - in HUD menu.
* Removed anti-wallhack from server pending fix of blinky problems (use a different engine as a server...)
* Added "sound/cdtracks" as an alternative for MP3 source folder (grrrr Darkplaces grrrr).
* Switched mapshots back to TGA.
* Cleared out more legacy crap (currenttexture, cnttextures, skytexturenum, stuff like that).
* Added (hopefully) more robust translucent water detection.
* Switched Heap memory allocation from CRT to Windows API (different behavior between debug and release builds with CRT).


WHAT DIDN'T MAKE IT
-------------------
Addition of crosshairs to the menu.
In-game resolution changing (STILL!)
Fixing gl_flashblend 1 mode.
More info on OSD stuff (pings, time remaining, etc).

WHAT MIGHT BE STILL BROKEN
--------------------------
Water translucency (works so far but you never know till it goes to the wild...)


Release 1.3 updates.
====================

* Various changes to the cvar system for better reliability; protection from QC abuse for certain cvars (disabled by default).
* Changed number of console notify lines to 5.
* Protected several cvars from QC abuse.
* Cvar-ized sound_nominal_clip_dist (default 1500).
* Added sound options menu.
* Moved "Customize Controls" to Input menu.
* Fixed mapshots (broke during viewport cleanup).
* Added "mapshot" command for user to take a mapshot wherever they wish.
* Added "r_automapshot" cvar (default 0) to take a mapshot automatically on entering a new level (in maps directory).
* Added mapshot drawing to serverlist menu.
* Moved sound to DirectSound 8.
* Removed parts of old "crappy Windows multimedia base".
* Modified somewhat weird sound startup to be more standardised.
* Removed sounds from cache memory system.
* Got rid of COM_LoadCacheFile (never used).
* Removed entire Cache system.
* Fixed "items/damage2.wav is not precached" bug on maps where you do impulse 255 with no quad in the map as standard.
* Removed Zone and Hunk memory systems; replaced with simplified Heap system.
* Fixed bug where larger player skins would crash R_TranslatePlayerTexture.
* Implemented texture flushing; those unused after 4 maps get flushed.
* Added LIT file support.
* Added -quoth support.
* Removed hard limit on number of warp update textures.
* Adjusted r_wateralpha so it's only effective if scene has translucent water or if r_novis is 1; made it an archive cvar.
* Bumped MAX_DLIGHTS to 128.
* Added r_monolight cvar to set coloured light off (default 1), requires map reload for static light.
* Changed rendering order for entities under translucent water.
* Added extra dynamic lights on many ents and tents, controlled by r_extradlight cvar (default 0).
* Fixed bug where lightning bolts weren't visible.
* Fixed model allocation memory leak (unlikely to be hit, but dangerous all the same!)
* Moved client-side entity lists to dynamic allocation (still fixed size with hard limits though...)
* Tightened up client side entity allocation memory overhead, 512 initial allocation, over 512 (up to 8192) allocated on-demand.
* Fixed bug where beams could persist after a changelevel has issued.
* Added cmd_allowqc cvar (default 1) to protect clients from unwanted command execution by rogue QC.
* Begun fully customizable alternate new HUD layout.
* More work on HUD layout; replicating classic HUD in new scriptable system.
* Added console autocompletion.
* Changed default r_wateralpha to 0.5 (new behaviour makes the safe).
* Changed lightmaps back to lock/unlock per frame (suspicion of the other method).
* Added console enhancements: left arrow, right arrow, insert, delete, copy and paste support.
* Removed limit on number of efrags.
* Various usability and performance improvements in the save/load menu.
* Several memory usage improvements.
* Modified warp update to allow user-settable detail (r_warptess, default 32) and better code efficiency.
* Fixed menu toggle options.
* Added anisotropic filtering (r_anisotropicfilter).
* Removed render to texture water warp update.
* Moved alias model interpolation to a vertex shader.
* Moved water warp update to a pixel shader.
* Rewrote instanced BSP model render (still messy and ugly).
* Added skybox loading (via "loadsky" and "sky" key in worldspawn).
* Changed sv.entities to dynamic.
* Replaced Hunk_ system.
* Fixed interpolation bug on entity model change.
* Changed mouse movement so it doesn't update if in the menu or console.
* Added mouse acceleration to both software and DirectInput.
* Added toggling between software and DirectInput mouse.
* Made a lot of entity loading console spam developer 1 only and printed simplified warning for developer 0.
* Completed move to fully dynamic memory allocation - no more -heapsize.
* Protocol optimization - comparison of origin and angles is based on what will actually be transmitted rather than what is stored (non-breaking).
* Definitively fixed CL_UpdateTEnts bug (thanks metlslime!)
* Added BJP protocols.  We can load Warpspasm maps now. :D
* Moved model loading to dynamic and bumped MAX_MOD_KNOWN to 8192.
* Fixed bug where not enough PVS bytes were allocated, only apparent where loadmodel->leafs == MAX_MAP_LEAFS, but would cause overflow/data stomping.  Bumped MAX_MAP_LEAFS to 32767.
* Added fullbrights to world surfs, moved them to shaders, removed old code.
* Enabled liquid textures on instanced brush models.
* Completed fullbright texture support on all world and alias surfaces/models.
* Moved more rendering to HLSL.
* Defaulted gl_clear to 1 as it seems faster on some hardware (i.e. mine!)
* Added server-side anti wallhack.  Don't know why you'd use this engine as a server, but it's there anyway...
* Fixed bug where an entity initially spawned on a frame other than 0 might have an invalid frame if it changes model (happens in some mods, not in ID1).
* Fixed infinite loop on server takedown in Warpspasm (still there on demo switching).


Release 1.2 updates.
====================

* Incorporated changes from 1.1 Emergency Releases.
* Fixed bug where a spawned backpack could sometimes inherit the angles of the dead player/monster.
* Added positional interpolation (r_lerporient, default 1).
* Added frame interpolation (r_lerpframe, default 1).
* Ported menu framework code.
* Moved Options menu to framework.
* Moved Main menu to framework.
* Changed clear colour to black now that I no longer need to check for clearing.
* Moved Single Player menu to framework.
* Fixed centerprints so that positioning is consistent.
* Fixed SCR_CenterPrint empty string bug.
* Moved Help menu to framework.
* Changed help menu so that it starts at page 1 if playing the registered version.
* Reworked Quit menu as a SCR_ModalMessage.
* Added last line of console output at bottom of screen for when menus are active (user feedback).
* Fixed occasional bug where Windows keeps a file open lock on config.cfg even after it's been closed.
* Fixed chase camera so it can never go inside (or through) a solid leaf.
* Adjusted number of save games to infinite; removed name restrictions.
* Moved save/load menus to framework.
* Fixed all remaining chasecam clipping/noclipping problems.
* Changed default m_boost value to 1.
* Changed appearance of SCR_ModalMessage messages slightly (added "Confirm" header and "[Y/N]" prompt).
* Fixed occasional DirectInput lockups/stalls.
* Removed "no multi-threaded" restrictions from Direct3D startup.
* Changed alias model bounding box cull and chasecam clip tests to per-frame bounding boxes.
* Removed old sky warp and r_oldsky cvar.
* Added Q2/etc style noclipping (was this in 1.1?)
* Changed speed and direction of new sky warp to more accurately mimic old sky warp.
* Removed surface subdivision from sky.
* Removed brush model specific stuff from model_t struct.
* Added struct header pointers for each model type to model_t struct.
* Massive cleanup, restructuring and explanations in submodel setup.
* Added fading of chase model when chasecam gets near it owing to geometry clipping.
* Added translucent viewmodel when one has the ring.
* Added translucent chase model when viewed from nearby.
* Switched mipmap chain generation to manual as automatic doesn't work too well on some cards.
* Restored HARDWARE_VERTEX_PROCESSING (need to test for lockups on NVIDIA).
* Changed default scr_conspeed to 3000 and scr_printspeed to 20 (from 300 and 8).
* Restored lightmap texture rectchange system (easier in D3D as top is 0 and it uses r and b, not w and h).
* Left lightmap textures locked for the entire map (to save locking/unlocking per frame).
* Removed glpoly_t from gl_model.h to gl_warp.cpp as that's the only place it's used any more.
* Gave water and sky their own custom vertex structs.
* Moved Multiplayer menu to framework.
* Commenced moving Setup menu to framework.
* Wrote a *real* textbox for "Hostname" and "Your Name".
* Removed display of Help page 0 ("Ordering") from the registered version.
* Fixed bug where the save menu would crash if there were no save games but was otherwise valid.
* Removed IPX Code.
* Restored r_wateralpha functionality (mimics stock GLQuake, no fancy changes).
* Cvar-ized light animation interpolation (r_lerplightstyle, default 1).
* Restored gl_flashblend 1 mode and made gl_flashbend an archive cvar (retained 0 as new default).
* Added r_lightupdatefrequency cvar to control how many times per second lightmaps update (default 0 = always).
* Added CDAudio_Stop to S_StopAllSounds.
* Added DirectShow code for media playback for when no CD is present.
* Added render to texture code for water warp updates.
* Removed surface subdivision from water surfaces.
* Replaced gl_warp_sin.h with internally generated sin table.
* Finished render to texture for water surfs (we lose a few frames here but the improvement is worth it).
* Expanded BSP light data to 3 component.
* Removed interpolation from muzzleflashes on viewmodels.
* Moved keybindings menu to framework.
* Fixed FPS loss with render to texture.
* Finished Multiplayer Setup Menu.
* Switched cvars to static storage of name and string (code simplification).
* Added more generally usable "Draw_TextBox" routine.
* Fixed bug in Save/Load menu where this->CurrentOption == NULL would crash on an unhandled key.
* Added sound/cdtracks as an optional music directory (first preference, fallback on music if not present).
* Allowed spaces or non-alphanumeric characters in save/load names.
* Added detection of invalid windows filename chars in save/load names.
* Added con_lineheight cvar to control height of console lines (default 8, same as classic Quake).
* Added external texture loader (not linked in to internal loader yet).
* Added mapshot drawing system.
* Added external BSP texture support: link, dds, tga, bmp, png and jpg formats supported.
* Adjusted default vid_gamma to 1.0 (consistency between external and native textures).
* Added scr_screenshotformat cvar (default tga), supports tga, bmp, png, jpg and dds.
* Finished mapshot writing.
* Cvar-ized screenshot directory (scr_screenshotdir, default "screenshot") - not as robust as it could be, don't try anything fancy!
* Cvar-ized external textures directory (gl_texturedir, default "textures") - see comment above.
* Cvar-ized save directory (host_savedir, default "save") - see comment above.
* Added hardware gamma control - uses old v_gamma cvar, works with -gamma cmdline (which is still retained).
* Moved TCP/IP - new game menu to framework.
* Fixed bug where the game would crash if a menu with no options at all was entered.
* Moved TCP/IP - join game menu to framework.
* Fixed bug where the game would crash on a key other than ESC in a menu with no options.
* Reverted alias models to whole model bbox cull tests (reliability).
* Moved game options menu to framework.
* Added deathmatch 0, coop 0 and teamplay 0 to load command.
* Added Input Options menu.
* Added Effects Options menu.
* Added Chase Camera Options menu.
* Added Content Directories menu.
* Made cvars self-registering and cmds self-adding.
* Added initial load of configs (setting cvars only) to get correct values in before anything else comes up.
* Increased several internal limits to match those of FitzQuake.
* Tested Marcher Fortress; ensured load and correct appearance.
* Fixed textbox startup when the length of the initial string was > 16.
* Fixed bug in textbox where holding down shift to type a capital letter would trigger the "deny" sound.
* Removed limit on number of static entities.
* Verified we can at least *load* cavetest2. ;D
* Removed software gamma calculations (WinQuake legacy).
* Added independent control of red/green/blue gamma (in addition to master control): r_gamma/g_gamma/b_gamma, defaults 1.
* Removed scr_copytop, scr_copyeverything, scr_fullupdate, sb_updates, Sbar_Changed (software legacy).
* Removed limit on number of particles; initial 4096, extra 2048 as required, cleared between maps.
* Fixed unsigned short to short translations in BSP loading.
* Fixed bug where a desktop resolution with 800 height would give a mode with 768 height as a valid windowed mode.
* Fixed bug where the vid_mode cvar was not being set correctly (at all, actually!) on startup.
* Fixed bug where dlights shine on backfacing surfs.
* Added smoother transitions between r_viewleafs with dfferent contents types.
* Moved "Search for Local Games" to framework.
* Added support for reading vid_mode from the configs and setting the correct mode according to that.
* Added r_lockpvs cvar for locking PVS to the current viewleaf; map development aid, default 0.
* Fixed bug where Alt-Tabbing back to a fullscreen mode would leave the screen garbled (viewport code needs a huge cleanup!)
* Finished porting of menus to framework.
* Fully removed gl_ztrick; it was *not* a happy bunny.
* Cleaned up the mess I had made of viewports.
* Fixed loss of LOD with warp update render to texture (more FPS loss as a result).
* Restored r_speeds 1 wpoly counter, left broken epoly counter (consistency with previous versions & other engines).


DirectQ 1.1 Point Release
=========================

Advance Warning: This release doesn't contain *any* of the new stuff I've been working on recently.  Instead, this has a few critical bug fixes and restoration of basic GLQuake functionality.  I've felt that the release was necessary as the initial version proved to be quite popular, but also had some right showstoppers in it.

Here's what's been done:

* Renamed to "DirectQ" to avoid confusion over the name.
* Reverted to Visual C++ 2003 to (hopefully) prevent PF_VarString crash on changelevel.
* Fixed crash in video menu when more than 27 modes are available.
* Removed all "ChangeDisplaySettings" calls to fix crash when Alt-Tabbing.
* Added splash screen so that you know which version you have.
* Fixed crash on dedicated server startup.
* Made DirectInput the default, use -nodinput to disable.
* Rewrote DirectInput code to use C++ style.
* Rewrote mouse code to use immediate mode rather than buffered mode.
* Added mousewheel support to DirectInput.
* Added 8-button mouse support to DirectInput.
* Added m_look cvar to give mouse looking.
* Changed m_forward default to 0.
* Added m_boost cvar to give additional boost to DirectInput without affecting sensitivity value.
* Renamed K_AUX buttons to K_JOY (it's what they are, after all).
* Added 4 K_POV buttons to keep POV hats separate from the joystick buttons.
* Added previous weapon option to keys menu.
* Removed _windowed_mouse cvar.
* Added "colour" command (same as "color").
* Fixed team colours are greyscale.
* Adjusted all projections to the correct aspect for the selected resolution.
* Added scalable 2D widget drawing (gl_conscale, 0 to 1).
* Fixed widescreen FOV.
* Removed alias models from the caching system.
* Fixed remaining Alt-Tab crashes.
* Added "vid_restart" command.
* Cleaned out a lot of legacy code from draw, surf and vidnt.
* Fixed window centering so it works properly on widescreen monitors.
* Cleaned out unused header files.
* Increased MINIMUM_WIN_MEMORY to 16 MB and MAXIMUM_WIN_MEMORY to 64 MB.
* Fixed water and sky surfaces on inline brush models not being rendered.
* Removed original Quake (all versions) crash when health goes below -19.
* Changed mode enumeration to be more WinQuake-like.
* Added Z-fail sky sphere warp (r_oldsky 0).
* Restored gl_clear functionality.


DIRECT 3D QUAKE!
================

What is it?
-----------
It's a true native Direct 3D 9.0c port of GLQuake.  It doesn't use the gl_fakegl wrapper, or any other wrapper, but is rather a complete rewrite of GLQuake's renderer to use proper Direct 3D.


Why is it?
----------
A number of reasons.  The prevailing wisdom is that Direct 3D is foisted on us by evil alien overlords, so there was an element of perversity, I suppose.  I was also at the stage where I was sufficiently frustrated with OpenGL to make the switch.  I don't really like the direction OpenGL seems to be going in at the present moment, it reminds me a lot of the dying throes of 3DFX moreso than anything else, so that was another factor.

Another consideration was the engines already out there.  There are - it seems to me - 3 main contenders.  ProQuake for the ultra-trads, QRack for eye candy, and DarkPlaces for everything *including* the kitchen sink (with extra kitchen sink).  However, there is a gap in the market, and that's for the people with Intel and ATI cards who often struggle to get OpenGL based engines working correctly.

I'm not arrogantly thinking I'm going to fill that gap, this engine is purely for my own personal amusement first and foremost, but if it helps anyone else get enjoyment out of a 12 year old game it's a good thing too.


What version of Direct 3D is needed?
------------------------------------
It should run on any Direct 3D 9.0c card, but it practice there are a few it probably won't run on.  I coded using the March 2008 SDK, so if you get an error saying that a required DLL is missing, you'll need to update your installed version of DirectX.


What else is needed?
--------------------
If you can run GLQuake you can probably also run this.  Direct3D has a few features, like texture locking and vertex buffers, that allow this engine to more memory-efficient than GLQuake was, so even if you can't run GLQuake you might still be able to run this.


How fast is it?
---------------
About the same speed as GLQuake.  I don't currently have a stock GLQuake to compare with, but on an Intel 915 mobile chipset I'm getting over 120 FPS in timedemo demo1, with a debug build.


What's new in it?
-----------------
Not much really.  The initial goal was to just get a straight port of stock GLQuake functionality working, and this is it.  I have removed a few things, like mirrors and gl_flashblend 1 mode.  There's no interpolation and I haven't renamed or removed any of the gl_* cvars, so as not to mess with people's configs.  Maybe some small bugfixes, but overall nothing much beyond what was in stock GLQuake.

I did add in 64 bit lightmaps, as they were really easy to do, and allowed me to significantly raise the cap on the maximum light intensity in the game (quadrupled, with better granularity than stock GLQuake, so stair-steps on them are vastly reduced).  I also removed the hard limits on the number of lightmaps, textures and video modes you can have.

Future releases may add extra functionality.

















